﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Controller;
using CrystalDecisions.CrystalReports.Engine;

namespace QLKS
{
    public partial class frmThongKe : Form
    {
        Controller_Statistics cont_stat = new Controller_Statistics();
        public frmThongKe()
        {
            InitializeComponent();
        }

        private void frmThongKe_Load(object sender, EventArgs e)
        {
            try
            {
                if (tabThongKe.SelectedIndex == 0)
                {
                    doDateNow();
                    doShowRpt_ThongkeNgay();
                }
            }
            catch (Exception)
            {

                throw;
            }
        }

        private void doShowRpt_ThongkeNgay()
        {
            
            int ngay = int.Parse(cmbNgay.Text.ToString());
            int thang = int.Parse(cmbThang.Text.ToString());
            int nam = int.Parse(cmbNam.Text.ToString());

            
            DataSet ds = new DataSet();
            rptTKDoanhThuNgay rptDoanhThu = new rptTKDoanhThuNgay();
            ds = cont_stat.Thongke_DoanhThu_Ngay(ngay, thang, nam);
            if (ds.Tables.Count != 0)
                rptDoanhThu.SetDataSource(ds.Tables[0]);

            //ReportObjects rptObjects = rptDoanhThu.ReportDefinition.ReportObjects;
            //FieldObject selectObj = (FieldObject)rptObjects["SumofTongTien2"];
            //string sdfsd = selectObj.DataSource.ToString();

            string ngayTK = "Ngày " + cmbNgay.Text + " Tháng " + cmbThang.Text + " Năm " + cmbNam.Text;
            ((TextObject)rptDoanhThu.ReportDefinition.ReportObjects["txtNgayThongKe"]).Text = ngayTK;
            this.rptViewDoanhthungay.ReportSource = rptDoanhThu;
            
        }


        public static string ReadNumber(decimal number)
        {
            string str = "";
            string s = number.ToString("#");
            string[] so = new string[] { "Không", "Một", "Hai", "Ba", "Bốn", "Năm", "Sáu", "Bảy", "Tám", "Chín" };
            string[] hang = new string[] { "", "nghìn", "triệu", "tỷ" };
            int i, j, donvi, chuc, tram;

            bool booAm = false;
            decimal decS = 0;
            //Tung addnew
            try
            {
                decS = Convert.ToDecimal(s.ToString());
            }
            catch
            {
            }
            if (decS < 0)
            {
                decS = -decS;
                s = decS.ToString();
                booAm = true;
            }
            i = s.Length;
            if (i == 0)
                str = so[0] + str;
            else
            {
                j = 0;
                while (i > 0)
                {
                    donvi = Convert.ToInt32(s.Substring(i - 1, 1));
                    i--;
                    if (i > 0)
                        chuc = Convert.ToInt32(s.Substring(i - 1, 1));
                    else
                        chuc = -1;
                    i--;
                    if (i > 0)
                        tram = Convert.ToInt32(s.Substring(i - 1, 1));
                    else
                        tram = -1;
                    i--;
                    if ((donvi > 0) || (chuc > 0) || (tram > 0) || (j == 3))
                        str = hang[j] + str;
                    j++;
                    if (j > 3) j = 1;
                    if ((donvi == 1) && (chuc > 1))
                        str = "một " + str;
                    else
                    {
                        if ((donvi == 5) && (chuc > 0))
                            str = "lăm " + str;
                        else if (donvi > 0)
                            str = so[donvi] + " " + str;
                    }
                    if (chuc < 0)
                        break;
                    else
                    {
                        if ((chuc == 0) && (donvi > 0)) str = "lẻ " + str;
                        if (chuc == 1) str = "mười " + str;
                        if (chuc > 1) str = so[chuc] + " mươi " + str;
                    }
                    if (tram < 0) break;
                    else
                    {
                        if ((tram > 0) || (chuc > 0) || (donvi > 0)) str = so[tram] + " trăm " + str;
                    }
                    str = " " + str;
                }
            }
            if (booAm) str = "Âm " + str;
            return str = str + "đồng";

        }

        #region Tùy chỉnh ComboBox Ngày tháng năm
        private void cmbThang_SelectedIndexChanged(object sender, EventArgs e)
        {
            int thang = int.Parse(cmbThang.Text.ToString());
            int nam = int.Parse(cmbNam.Text.ToString());
            int ngay = int.Parse(cmbNgay.Text.ToString());
            cmbNgay.Items.Clear();
            if (thang == 1 || thang == 3 || thang == 5 || thang == 7 || thang == 8 || thang == 10 || thang == 12)
                this.cmbNgay.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" });
            else if (thang == 4 || thang == 6 || thang == 9 || thang == 11)
                this.cmbNgay.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30" });
            else if (nam % 100 != 0 && nam % 4 == 0)
                this.cmbNgay.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29" });
            else
                this.cmbNgay.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28" });

            if (int.Parse(cmbNgay.Text.ToString()) > cmbNgay.Items.Count)
            {
                cmbNgay.Text = DateTime.Now.Day.ToString();
            }
            else
                cmbNgay.Text = ngay.ToString();

        }
        private void doDateNow()
        {
            cmbNgay.Text = DateTime.Now.Day.ToString();
            cmbNam.Text = DateTime.Now.Year.ToString();
            cmbThang.Text = DateTime.Now.Month.ToString();
            int nam = int.Parse(cmbNam.Text.ToString());
            int thang = int.Parse(cmbThang.Text.ToString());
            cmbNgay.Items.Clear();
            if (thang == 1 || thang == 3 || thang == 5 || thang == 7 || thang == 8 || thang == 10 || thang == 12)
                this.cmbNgay.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" });
            else if (thang == 4 || thang == 6 || thang == 9 || thang == 11)
                this.cmbNgay.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30" });
            else if (nam % 100 != 0 && nam % 4 == 0)
                this.cmbNgay.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29" });
            else
                this.cmbNgay.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28" });
        }
        #endregion

        private void btnXemThongKe_Click(object sender, EventArgs e)
        {
            doShowRpt_ThongkeNgay();
        }

        private void tabThongKe_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (tabThongKe.SelectedIndex == 0)
                {
                    doDateNow();
                    doShowRpt_ThongkeNgay();
                }
                else if (tabThongKe.SelectedIndex == 1)
                {                    
                    cmbNam2.Text = DateTime.Now.Year.ToString();
                    cmbThang2.Text = DateTime.Now.Month.ToString();
                    doShowRpt_ThongkeThang();
                }
                else if (tabThongKe.SelectedIndex == 2)
                {
                    cmbNam3.Text = DateTime.Now.Year.ToString();
                    cmbNgay3.Text = DateTime.Now.Day.ToString();
                    cmbThang3.Text = DateTime.Now.Month.ToString();
                    
                    doShowPRT_ThongkePhongtheoNgay();
                }
            }
            catch (Exception x)
            {
                MessageBox.Show(string.Format("Lỗi: {0}", x.Message), "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void doShowPRT_ThongkePhongtheoNgay()
        {
            int ngay = int.Parse(cmbNgay3.Text.ToString());
            int thang = int.Parse(cmbThang3.Text.ToString());
            int nam = int.Parse(cmbNam3.Text.ToString());
            DataSet ds = new DataSet();
            rptTKPhongTheoNgay rptPhong = new rptTKPhongTheoNgay();
            ds = cont_stat.TK_SoPhong_theoNgay(ngay, thang, nam);
            if (ds.Tables.Count != 0)
                rptPhong.SetDataSource(ds.Tables[0]);
            string ngayTK = "Ngày " + cmbNgay3.Text + " Tháng " + cmbThang3.Text + " Năm " + cmbNam3.Text;
            ((TextObject)rptPhong.ReportDefinition.ReportObjects["txtNgayDat"]).Text = ngayTK;
            this.rptViewTKtheoNgay.ReportSource = rptPhong;

        }

        private void doShowRpt_ThongkeThang()
        {
            int thang = int.Parse(cmbThang2.Text.ToString());
            int nam = int.Parse(cmbNam2.Text.ToString());
            DataSet ds = new DataSet();
            ds = cont_stat.Thongke_DoanhThu_Thang(thang, nam);
            rptTKDoanhThuThang rptTKThang = new rptTKDoanhThuThang();
            if (ds.Tables.Count != 0)
                rptTKThang.SetDataSource(ds.Tables[0]);
            string ngayTK =  " Tháng " + cmbThang2.Text + " Năm " + cmbNam2.Text;
            ((TextObject)rptTKThang.ReportDefinition.ReportObjects["txtThangTk"]).Text = ngayTK;
            this.rptViewTKDoanhThuThang.ReportSource = rptTKThang;

        }

        private void btnTKThang_Click(object sender, EventArgs e)
        {
            doShowRpt_ThongkeThang();
        }

        private void cmbThang3_SelectedIndexChanged(object sender, EventArgs e)
        {
            int thang = int.Parse(cmbThang3.Text.ToString());
            int nam = int.Parse(cmbNam3.Text.ToString());
            int ngay = int.Parse(cmbNgay3.Text.ToString());
            cmbNgay3.Items.Clear();
            if (thang == 1 || thang == 3 || thang == 5 || thang == 7 || thang == 8 || thang == 10 || thang == 12)
                this.cmbNgay3.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" });
            else if (thang == 4 || thang == 6 || thang == 9 || thang == 11)
                this.cmbNgay3.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30" });
            else if (nam % 100 != 0 && nam % 4 == 0)
                this.cmbNgay3.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29" });
            else
                this.cmbNgay3.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28" });

            if (int.Parse(cmbNgay3.Text.ToString()) > cmbNgay3.Items.Count)
            {
                cmbNgay3.Text = DateTime.Now.Day.ToString();
            }
            else
                cmbNgay3.Text = ngay.ToString();
        }

        private void btnXemTKPhong_Click(object sender, EventArgs e)
        {
            doShowPRT_ThongkePhongtheoNgay();
        }




    }
}
